{{tag>Lucid courriel serveur BROUILLON}}
----

====== DBMail : serveur de courrier IMAP et POP ======

**DBMail** permet de stocker les courriels dans une base de données au lieu du disque, et d'y accéder en IMAP ou POP.

Il travaille en conjonction avec [[Postfix]], l'agent de transfert de courriel (MTA) par défaut d'Ubuntu.

===== Pré-requis =====
  * Disposer d'un Nom de Domaine Déposé auprès d'un Registrar et d'un enregistrement MX.
<code>sudo dig domain.tld && sudo dig mx domain.tld #doit exister</code> 
  * Expérience vivement recommandée en LAMP et SSH, pour une meilleure méthodologie et débogage
  * Etablir une connexion internet sur votre serveur, ne vous pose pas de problème.
<code>ssh toto@www.domain.tld #exemple1 ; lynx http://www.domain.tld #exemple2 </code>
  * Cas particuliers auto-hébergement

^     ^   Auto-hébergé         ^                   ^   Registrar type                ^ GANDI  ^  Paliatif                       ^  Smtp                                ^ Imap Pop^
^  Cas   ^ IP fixe  ^dynamique  ^ DNS zone  ^ MX   ^ dyndns no-ip  ^   POSTFIX DBMAIL  ^^
^1   |oui  |x        | [[http://www.isalo.org/wiki.debian-fr/index.php?title=Configuration_d%27un_serveur_mail_avec_Postfix#Un_exemple_de_configuration_de_DNS_chez_gandi.net|GANDI]]  | oui | x | Envoyer ET Recevoir |oui |
^2   |    |               |[[http://guides.ovh.com/VotreServeurMail|OVH]]   |     |              |   
^3   |x   | oui      | test.domain.tld | ok.dyndns.org | ok.dyndns.org | Envoyer ET Recevoir | test.domain.tld mail is handled by ok.dyndns.org.|
^4   |x   |oui       |x     |x    |ok.dyndns.org     | Envoyer Uniquement  |ok.dyndns.org has no MX record. voir smtp_generic_maps | 
^4   | --------------------> dbmail est inutile : Recevoir sur imap.fai.fr imap.gmail.com    ||||||canonical_maps relayhost /etc/aliases | 
^5   | x   |oui               | x    |x    | ok.dyndns.org mxok.dyndns.org  |Envoyer ET Recevoir |ok.dyndns.org mail is handled by mxok.dyndns.org. |   
^6  |    |             |     |     |              |           
légende;    x=non,        host -t mx domain.tld
>Cas 1,2,3 recommandés

 ===== PostFix =====
 
Ajout à la fin de /etc/postfix/master.cf
	sudo vim /etc/postfix/master.cf
	dbmail-lmtp     unix    -       -       n       -       -       lmtp

=== Configuration de postfix ===
	sudo dpkg-reconfigure postfix

=== mailname main.cf ===

sudo nano /etc/mailname
<code> domain.com</code>

  * domain.com est le domaine en tant que domaine de messagerie
  * smtp.domain.com est le CNAME ou alias du MX, ou MX lui même.
  * le mailto: toto@domain.com est alors possible 
NB: valable également pour un sous.domain.com en tant que domaine de messagerie

=== main.cf ===
sudo nano /etc/postfix/main.cf
<code>
smtpd_banner = $myhostname ESMTP $mail_name
biff = no
append_dot_mydomain = no
readme_directory = no
myhostname = smtp.domain.com
mydomain = domain.com
mydestination = smtp.domain.com, localhost.domain.com, localhost
       
# méthode virtual 
# supprimer mydestination 
# relay_domains = $mynetworks
# relay_recipient_maps = mysql:/etc/postfix/sql-virtual_mailbox_maps.cf
               
myorigin = $mydomain
relayhost =
mynetworks = 127.0.0.0/8, 192.168.1.0/24
relay_domains = $mydestination
mailbox_size_limit = 51200000
recipient_delimiter = +
inet_interfaces = all
inet_protocols = all
smtpd_recipient_restrictions =
		permit_auth_destination,
		permit_mynetworks,
		permit_sasl_authenticated,
		reject_non_fqdn_hostname,
		reject_non_fqdn_sender,
		reject_non_fqdn_recipient,
		reject_unauth_destination,
		reject_unauth_pipelining,
		reject_invalid_hostname,
		reject_rbl_client opm.blitzed.org,
		reject_rbl_client list.dsbl.org,
		reject_rbl_client bl.spamcop.net,
		reject_rbl_client sbl-xbl.spamhaus.org
		reject
virtual_transport = dbmail-lmtp:localhost:24
virtual_mailbox_domains = mysql:/etc/postfix/sql-virtual_mailbox_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/sql-virtual_mailbox_maps.cf
</code>

Création de /etc/postfix/sql-virtual_mailbox_domains.cf
	sudo vim /etc/postfix/sql-virtual_mailbox_domains.cf
	user     = dbmail
	password = password
	hosts    = 127.0.0.1
	dbname   = dbmail
	query    = SELECT DISTINCT 1 FROM dbmail_aliases WHERE SUBSTRING_INDEX(alias, '@', -1) = '%s';

Création de /etc/postfix/sql-virtual_mailbox_maps.cf
	sudo vim /etc/postfix/sql-virtual_mailbox_maps.cf
	user     = dbmail
	password = password
	hosts    = 127.0.0.1
	dbname   = dbmail
	query    = SELECT 1 FROM dbmail_aliases WHERE alias='%s';

Redémarrage postfix
<code>
sudo /etc/init.d/postfix restart
sudo postfix reload
</code>




====== Dbmail ======
 
 


=====  Dbmail 3.0 =====

  * prend désormais en charge imaps
  * gestion et stockage via les tables mysql ou postgresql 
  * adapté à la messagerie de masse et aux méthodes virtuelles de Postfix.
  * les tables mysql ou postgresql sont également incompatibles avec celles de dbmail 2.2

sudo nano /etc/apt/sources.list
<code>
# squeeze
deb http://debian.nfgd.net/debian/ squeeze main
# sid
deb http://debian.nfgd.net/debian/ sid main
# lucid
deb http://debian.nfgd.net/debian/ lucid main
</code>
<code>sudo apt-get update && sudo apt-get upgrade</code>
<code>sudo apt-get install dbmail</code>
**[[apt://dbmail|]]**  (mysql est déjà inclus dans ce paquet)
[[http://www.dbmail.org/index.php?page=download|Téléchargement]]
==== Dbmail 2.2 ====
Présent normalement dans les dépôts.
 **[[apt://dbmail,dbmail-mysql|]]**.

===== Configuration =====
==== dbmail 3.0 ====
[[http://www.iredmail.org/wiki/index.php?title=Integration/DBMail.iRedMail.with.MySQL.backend/RHEL#Summary|Complément d'informations]] 


==== dbmail 2.2 ====

=== la base de données ===

Création du schema dbmail
	mysql -uroot -p
	mysql> CREATE schema dbmail;
	mysql>ALTER DATABASE  `dbmail` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

Récupération et décompression du modèle de table :
	cp /usr/share/doc/dbmail-mysql/examples/create_tables.mysql.gz ~/
	gzip --decompress ~/create_tables.mysql.gz

Création des tables
	mysql -uroot -p dbmail < ~/create_tables.mysql

Création d'un utilisateur dbmail
	mysql -uroot -p
	GRANT ALL ON dbmail.* to dbmail@localhost identified by 'password';

=== dbmail ===

Modification des lignes suivantes dans /etc/dbmail/dbmail.conf
	sudo vim /etc/dbmail/dbmail.conf
	driver = mysql
	authdriver = sql
	host = localhost
	sqlsocket = /var/run/mysqld/mysqld.sock
	user = dbmail
	pass = password
	db = dbmail
	SIEVE_NOTIFY = no

Modification de /etc/default/dbmail pour le démarrage de l'imap et lmtp
	sudo vim /etc/default/dbmail
	START_IMAPD=1
	START_LMTPD=1
	START_SIEVE=1

Redémarrage de dbmail
	sudo service dbmail restart

==== Compte Boîte aux Lettres - Mailbox  ====
**sudo dbmail-users**
  * -a  //ajouter un nouveau Compte//
  * -w  //mot de passe//
  * -p  //type_password//   md5, plaintext, crypt, md5-hash, md5-digest, crypt-raw, md5-hash-raw, md5-digest-raw, md5-base64, md5-base64-raw 
  * -c  //mise à jour du compte//
  * -s  //créer// une adresse mail ou plusieurs alias  -s toto@domain.tld,titi@domain.tld
  * -S  //supprimer// une adresse mail ou plusieurs alias
  * -m  //quota// -m 50M 
  * -d   //supprimer un compte//
  * -x toto@domain.tld -t forward@domain2.tld2   //ajouter un forward //
  * -x toto@domain.tld -T forward@domain2.tld2   //supprimer un forward//

** Ajouter & Créer un nouveau compte toto@domain.tld avec son adresse mail toto@domain.tld**
<code>
sudo dbmail-users -a toto@domain.ltd -w mypass -p md5 -s toto@domain.ltd
Adding INBOX for new user... ok.
[toto@domain.tld]
Done
</code>

Supprimer un compte
<code>
sudo dbmail-users -d toto@domain.tld
</code>
http://www.dbmail.org/dokuwiki/doku.php/manage_users

 ====SASL   ====

Dbmail utilise saslauthd comme démon d'authentification (sasl authentication server).
Rimap (Requête d'authentification au près du serveur IMAP) et LDAP sont les plus intéressants pour les méthodes //virtual//.
Pam n'est pas vraiment adapté pour la messagerie de masse et il y a toujours moyen de convertir un user unix/pam en virtual/rimap par exemple. Avec les solutions Webmail, ce sentiment est renforcé.

 === Convertir un utilisateur Unix/Pam en Virtual/Rimap ===

sudo nano /etc/postfix/sender_canonical
<code>
user_unix   user_virtual@domain.tld
user_unix@domain.tld   user_virtual@domain.tld
</code>
<code>
sudo postmap hash:/etc/postfix/sender_canonical
sudo postconf -e 'sender_canonical_maps = hash:/etc/postfix/sender_canonical'
sudo dbmail-users -a user_virtual@domain.tld -s user_virtual@domain.tld -w mot_de_passe
</code>
user_virtual@domain.tld sert de récipient.

===  /etc/default/saslauthd ===
 
  * avec RIMAP
<code>
START=yes
NAME="saslauthd"
MECHANISMS="rimap"
MECH_OPTIONS="localhost"
THREADS=5
OPTIONS="-r -c -m /var/spool/postfix/var/run/saslauthd"
</code>
  * Service 
<code>
sudo service saslauthd restart|reload
</code>
==== postfix sasl====
=== main.cf ===
à titre d'information
<code>
broken_sasl_auth_clients = yes
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtpd_recipient_restrictions = permit_auth_destination,	permit_mynetworks,	permit_sasl_authenticated,	....,	reject_non_fqdn_hostname,	reject_non_fqdn_sender,	reject_non_fqdn_recipient,	reject_unauth_destination,	reject
smtpd_sasl_auth_enable = yes
smtpd_sasl_authenticated_header = no
smtpd_sasl_local_domain = domain.tld
smtpd_sasl_path = smtpd
smtpd_sasl_security_options = noanonymous
smtpd_sasl_type = cyrus
</code>
== smtp_sasl_password_maps ==
Sert principalement à s'authentifier auprès d'un relais serveur smtp dans le but de s'en servir comme transporteur.
( voir relayhost, transport_maps )

sudo nano /etc/postfix/sasl_passwd
<code>
[11.22.22.44]:587 compte@fai.fr:mot_de_passe
smtp.gmail.com:587 compte@gmail.com:mot_de-passe
</code>
<code>
sudo postmap hash:/etc/postfix/sasl_passwd
sudo postconf -e 'smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd'
</code>
=== master.cf ===
la même chose pour smtp,submisson,smtps
<code>
submission      inet    n    -    n    -    -    smtpd
	....
	-o smtpd_sasl_auth_enable=yes
	-o smtpd_client_restrictions=permit_sasl_authenticated,reject
         ...
</code>
==== Mise en place du CRAM-MD5 ====
P'tit rappel;
  - authentification en clair : PLAIN, LOGIN (rétro-compatibilité)
  - __authentification cryptée : CRAM-MD5__, DIGEST-MD5 (peu utilisé) 
  * le mech_list n'a aucun rapport avec le type de stockage des mots de passe.
  * cram-md5 a un stockage //plaintext// [[http://www.dbmail.org/dokuwiki/doku.ph/smtp_auth:postfix?s[]=auxprop|Source]]""But remember, that this will work only with 'plain' passwords in database.""
<code>
sudo dbmail-users -c toto@domain.tld -p plaintext -w password
</code>
  * /etc/postfix/smtpd.conf peut être obtenu par lien symbolique 
<code>
sudo ln -s /usr/lib/sasl2/smtpd.conf /etc/postfix/smtpd.conf
sudo ln -s /usr/lib64/sasl2/smtpd.conf /etc/postfix/smtpd.conf
</code>
<code>
pwcheck_method: saslauthd
mech_list: cram-md5 login 
auxprop_plugin: sql
sql_engine: mysql
sql_hostnames: 127.0.0.1
sql_user: dbmail
sql_passwd: pass
sql_database: dbmail
sql_verbose: yes
sql_select: SELECT passwd FROM dbmail_users WHERE userid = '%u'
</code>
[[http://asyd.net/docs/cyrus-options.html|Options for Cyrus SASL]]

  * /etc/dbmail/dbmail.conf à modifier
AUTH=LOGIN AUTH=CRAM-MD5
<code>
...
# Provide a CAPABILITY to override the default
#
# capability 		= IMAP4 IMAP4rev1 AUTH=LOGIN ACL RIGHTS=texk NAMESPACE CHILDREN SORT QUOTA THREAD=ORDEREDSUBJECT UNSELECT IDLE
...
</code>
  * postfix main.cf
<code>
smtp_sasl_mechanism_filter = cram-md5 login
</code>
=== test avec roundcube ===
<code>
18:49:46 www roundcube: [77EB] C: A0001 ID ("name" "Roundcube Webmail" "version" "0.7.1" "php" "5.3.2-1ubuntu4.14" "os" "Linux" "command" "/roundube/?_task=mail&_action=moveto")
18:49:46 www roundcube: [77EB] S: * ID ("name" "dbmail" "version" "3.0.1" "os" "Linux" "os-version" "2.6.32-41-generic")
18:49:46 www roundcube: [77EB] S: A0001 OK ID completed
18:49:46 www roundcube: [77EB] C: A0002 AUTHENTICATE CRAM-MD5
18:49:46 www roundcube: [77EB] S: + MTM0MzA2MjE4Ni4xOTIzMy4yNkAobm9uZSk=
18:49:46 www roundcube: [77EB] C: ZXJyb3JAbS50aXRvdS5pbmZvIDczZmQwYmY4NWNiZjQ3YTM3YjliYzNhMWYwOTA5Nzcy
18:49:46 www roundcube: [77EB] S: A0002 OK [CAPABILITY IMAP4rev1 ACL RIGHTS=texk NAMESPACE CHILDREN SORT QUOTA THREAD=ORDEREDSUBJECT UNSELECT IDLE 
STARTTLS ID] User toto@domain.tld authenticated
</code>



=====  Alias et Forward =====
 
 ====  Alias ====

Losque les domaines appartiennent au même mx, il s'agit plutôt d'alias et dérivés. Les domaines partagent également le même démon d'authentification (saslauthd)

<code>
sudo dbmail-users -c toto@domain.tld -s toto@domain.tld,tata@domain.tld,oto@domain2.tld2,tata@domain3.tld3
</code>
<code>
smtpd_sasl_local_domain = domain.tld domain2.tld2 domain3.tld3
</code>
 ==== Forward ====
Lorsque les mx sont différents, cela ressemble plutôt à des méthodes de type forward

=== Pour envoyer, reécrire l'expéditeur ===

pour envoyer des mails, sender_canonical_maps est suffisant

sudo nano /etc/postfix/sender_canonical
<code>
yoko       pierre.durand@gmail.com
yoko@domain.tld      pierre.durand@gmail.com
</code>
<code>
sudo postmap hash:/etc/postfix/sender_canonical
sudo postconf -e 'sender_canonical_maps = hash:/etc/postfix/sender_canonical'
</code>

test
<code>
yoko@pc:~$ echo 'bonjour' | mail -s 'test' toto@sfr.fr
</code>
yoko devient pierre.durand@gmail.com, qui envoit au destinataire final toto@sfr.fr

=== Recevoir et Faire Suivre automatiquement le courrier===

le courrier à destination de toto@domain.tld est renvoyé chez durand.pierre@free.fr
<code>
sudo dbmail-users -x toto@domain.tld -t durand.pierre@free.fr
</code>

=== Créer un clone de Mailbox d'un mx différent===

>sudo apt-get install imapsync
Dans l'exemple qui suit, la boîte aux lettres de gmail est copié sur une boîte aux lettres récemment crée de votre domaine.
  * host1 est la source, host2 est la destination.

  * Simuler avec --dry
<code>
imapsync --host1 imap.gmail.com --user1 compte@gmail.com --password1 motdepasse_gmail --port1 993 --ssl1 --authmech1 LOGIN --host2 mail.domain.tld --user2 yoko@domain.tld --password2 motdepasse_yoko --dry
</code>
  * Copier réellement
<code>
imapsync --host1 imap.gmail.com --user1 compte@gmail.com --password1 motdepasse_gmail --port1 993 --ssl1 --authmech1 LOGIN --host2 mail.domain.tld --user2 yoko@domain.tld --password2 motdepasse_yoko
</code>

=== Recevoir et Rapatrier du courrier ===

>sudo apt-get install fetchmail
fetchmailconf sert à rien et risque de vous induire en erreurs.

Dans l'exemple ci-dessous, le courrier est rapatrié d'un compte gmail

sudo nano /etc/fetchmailrc
<code>
# Read the ISP accounts every 3600 seconds
set syslog 
set daemon 3600 

# Configure the ISP accounts (POP server, users and respective passwords)
poll imap.gmail.com with protocol IMAP: 
user "pierre.durand@gmail.com" with pass "motdepasse-de-pierre" with ssl with sslcertck is "yoko@domain.tld" here keep
smtphost smtp.domain.tld
</code>
[[http://fetchmail.berlios.de/fetchmail-man.html#5|Options Fetchmail]]

Fetchmail relève toutes les heures les mails de pierre.durand@gmail.com et les rapatrie directement sur yoko@domain.tld.
  * keep signifie que fetchmail crée une copie du mail sans le détruire sur le serveur distant.
  * sender_canonical_maps a été défini.
  * sudo service fetchmail restart # pour relançer le démon.

Fetchmail fait un doublon, voir inutile,  si vous avez délà roundcube, horde, qui font déjà du //fetch//. 
  * exemple en modifiant le main.inc.php de roundcube

<code>
$rcmail_config['default_host'] = array(
        .... 
	'imap.free.fr:143' => 'FREE',
	'ssl://imap.gmail.com:993' => 'GMAIL',
	'imap.gmx.com:143' => 'GMX',
	'ssl://imap.orange.fr:993' => 'ORANGE',
	'imap.sfr.fr:143' => 'SFR',
	'ssl://imap.domain.tld:993' => 'mondomaine',
	'ssl://imap.mail.yahoo.com:993' => 'YAHOO');
</code>

//Fetchmail// peut servir à créer des Shared Mailbox dbmail, encore plus complexes, en intégrant des domaines de mx différents.

===== Shared Mailbox =====
Ces boîtes sont appelées boîtes aux lettres partagées - Elles sont décrites dans la table //dbmail_subscription//. Les droits d'accès appropriés sont décrits dans la table //dbmail_acl//.

vérification et récupérer le user_idnr 
<code>
select user_idnr as reference,  userid as login, passwd as password from dbmail_users; 
+-----------+--------------------------------+------------------------------------+
| reference | login                          | password                           |
+-----------+--------------------------------+------------------------------------+
|         1 | __@!internal_delivery_user!@__ |                                    |
|         2 | anyone                         |                                    |
|         3 | __public__                     |                                    |
....
sudo dbmail-users -l __public__ | awk -F: '{print$3}'    # renvoit 3
</code>
==== dbmail-acl.sh ====
[[http://linux.bononline.nl/linux/dbmail/src/dbmail-acl.sh|Téléchargement]]
Ce script permet de créer plus facilement les boîtes aux lettres partagées.

<code>
mkdir ~/dbmail ; cd ~/dbmail
wget http://linux.bononline.nl/linux/dbmail/src/dbmail-acl.sh
sudo cp /etc/dbmail/dbmail.conf .
sudo chown votre_user:votre_user ./dbmail.conf 
sudo chmod +x dbmail-acl.sh 
</code>
Renseigner la partie
<code>
DBMAIL[_dbmail_mysqldatabase]="dbmail"
DBMAIL[_dbmail_mysqluser]="dbmail"
DBMAIL[_dbmail_mysqlpassword]="gdhgybvudo"
DBMAIL[_dbmail_mysqlhost]="localhost"
DBMAIL[_dbmail_conffile]="/home/votre_user/dbmail/dbmail.conf"
DBMAIL[_dbmail_driver]="mysql"
</code>
modifier pour dbmail 3.x à proximité de function get_all_acls() 
<code>
$MYSQL_CLIENT -N -e "SELECT lookup_flag, read_flag, seen_flag, write_flag, insert_flag, post_flag, create_flag, delete_flag, deleted_flag, expunge_flag, administer_flag FROM dbmail_acl WHERE mailbox_id = $mailbox_idnr and user_id = $user_idnr;"
</code>
et acl_add()
<code>
 $MYSQL_CLIENT -e "INSERT INTO dbmail_acl values ($user_idnr, $mailbox_idnr, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1);"
</code>

==== Mailbox ====

Au besoin, si dbmail-acl.sh ne crée pas les mailboxes.

  * création manuelle mailbox anyone
<code>
insert INTO dbmail_mailboxes (owner_idnr, name, seen_flag, answered_flag, deleted_flag, flagged_flag, recent_flag, draft_flag, no_inferiors, no_select, permission, seq ) VALUES ( '2', 'INBOX', '0', '0', '0', '0', '0', '0', '0', '0', '2', '0' );
</code>
  * création manuelle mailbox public
<code>
insert INTO dbmail_mailboxes (owner_idnr, name, seen_flag, answered_flag, deleted_flag, flagged_flag, recent_flag, draft_flag, no_inferiors, no_select, permission, seq ) VALUES ( '3', 'INBOX', '0', '0', '0', '0', '0', '0', '0', '0', '2', '0' );
</code>

==== #Users ====
en supposant que vous ayez 3 comptes distincts;
<code>
sudo dbmail-users -a t1@domain.tld -s t1@domain.tld -w t1
sudo dbmail-users -a t2@domain.tld -s t2@domain.tld -w t2
sudo dbmail-users -a t3@domain.tld -s t3@domain.tld -w t3
</code>

**t1@mdomain.tld partage sa mailbox avec t2@domain.tld et t3@domain.tld**
<code>
sudo bash ~/dbmail/dbmail-acl.sh add t2@domain.tld t1@mdomain.tld 
Taking default mailbox INBOX
Adding (full) acl rights for 26 to 60.
Adding subscription of 26 to 60.
sudo bash ~/dbmail/dbmail-acl.sh add t3@domain.tld t1@domain.tld 
Taking default mailbox INBOX
Adding (full) acl rights for 27 to 60.
Adding subscription of 27 to 60.
 </code>

=== Messagerie de t2@domain.tld ===
 
La messagerie t1@domain.tld est partagée et incluse dans celle de t2@domain.tld.

{{:dbmail:dbmail-partage-users.png?direct&700 |}}

==== #Public ====
en supposant que vous ayez 1 compte distinct;
<code>
sudo dbmail-users -a entreprise@domain.tld -s entreprise@domain.tld -w entreprise
</code>

<code>
sudo bash ~/dbmail/dbmail-acl.sh add entreprise@domain.tld __public__ 
Taking default mailbox INBOX
Adding (full) acl rights for 28 to 51.
Adding subscription of 28 to 51.
</code>

ajouter une adresse mail 'project@domain.tld' pour #Public
<code>
insert into dbmail_aliases ( alias, deliver_to, client_idnr ) value ( 'project@domain.tld', '3', '0' )
</code>
{{:dbmail:dbmail:dbmail-partage-public.png?direct&700 |}}

==== #Anyone ====
<code>
sudo dbmail-users -a open@domain.tld -s open@domain.tld -w open
sudo bash ~/dbmail/dbmail-acl.sh add open@domain.tld anyone
</code>
ajouter une adresse mail 'anyone@domain.tld'
<code>
insert into dbmail_aliases ( alias, deliver_to, client_idnr ) value ( 'anyone@domain.tld', '2', '0' )
</code>
{{:dbmail:dbmail:dbmail-partage-anyone.png?direct&700 |}}
===== Mailman =====
==== Ajouter les Recipients ====
C'est l'équivalence de virtual-aliases pour d'autres serveurs imap. Il n'y a pas besoin également de rajouter des aliases dans /etc/aliases. Les récipients des listes se trouvent dans la table dbmail_aliases 

sudo nano dbmail-add-list
<code>
#!/bin/bash
#14/07/2012
# sudo bash dbmail-addl-list <list_name>
#DOMAINNAME est le domaine de messagerie

if [ "x$1" == "x" ]; then
echo "No maillist specified"
echo "Usage: dbmail-add-list <list_name>"
exit 1
fi

DOMAINNAME="@list.domain.tld"
#DOMAINNAME="@domain.tld" si vous n'avez pas beaucoup de listes.

MAILLIST=$1

echo "dbmail-users -x $MAILLIST$DOMAINNAME -t \"|/usr/lib/mailman/mail/mailman post $MAILLIST\""
dbmail-users -x $MAILLIST$DOMAINNAME -t "|/usr/lib/mailman/mail/mailman post $MAILLIST"

for i in admin bounces confirm join leave owner request subscribe unsubscribe;
do
echo "dbmail-users -x $MAILLIST-$i$DOMAINNAME -t \"|/usr/lib/mailman/mail/mailman $i $MAILLIST\""
dbmail-users -x $MAILLIST-$i$DOMAINNAME -t "|/usr/lib/mailman/mail/mailman $i $MAILLIST"
done 
</code>
=== exemple pour la liste "pub" ===
  * Création<code>sudo newlist pub</code>
  * Ajouter les Récipients
sudo bash /home/.../dbmail-add-list pub
<code>
dbmail-users -x pub@list.domain.tld -t "|/usr/lib/mailman/mail/mailman post pub"
[|/usr/lib/mailman/mail/mailman post pub]
Done
dbmail-users -x pub-admin@list.domain.tld -t "|/usr/lib/mailman/mail/mailman admin pub"
[|/usr/lib/mailman/mail/mailman admin pub]
Done
...
.......
dbmail-users -x pub-subscribe@list.domain.tld -t "|/usr/lib/mailman/mail/mailman subscribe pub"
[|/usr/lib/mailman/mail/mailman subscribe pub]
Done
dbmail-users -x pub-unsubscribe@list.domain.tld -t "|/usr/lib/mailman/mail/mailman unsubscribe pub"
[|/usr/lib/mailman/mail/mailman unsubscribe pub]
Done
</code>
  * Lister les listes
<code>
sudo list_lists 
  2 listes correspondantes trouvées 
     Mailman 
      Pub 
</code>
  *  Supprimer une liste
<code>
sudo rmlist pub 
</code>

 ==== Annexe mailman ====
 
  * master.cf
<code>
mailman unix  -       n       n       -       -       pipe
      flags=FR user=list:list 
      argv=/var/lib/mailman/bin/postfix-to-mailman.py ${nexthop} ${user}
</code>
  * transport_maps
<code>
list.domain.tld	   mailman:
</code>
  * check permissions
<code>
sudo check_perms;  sudo check_perms -f  # pour fixer les problèmes
</code>
  * Problème éventuel de Redirection  entre la web_page_url de la liste et et du hostname (GUI MAILMAN & Apache)
<code>sudo withlist -l -a -r fix_url </code>
[[http://wiki.list.org/display/DOC/4.27+Securing+Mailman%27s+web+GUI+by+using+Secure+HTTP-SSL|source]]
===== Web-based DbmailAdmin =====
 Les interfaces graphiques à base de LAMP ou équivalent, pas obligatoires pour manager son dbmail.
  - [[http://code.google.com/p/simple-dbmail-admin/|Simple-dbmail-admin ]] nouveau projet 06/2012
  - [[http://dbmailadmin.org/|Web DbmailAdmin ]]

 ===== Pare-feu =====
 
Ne pas oublier d'ouvrir les ports du pare-feu

Exemple avec shorewall : 
	sudo vim /etc/shorewall/rules
	IMAP/ACCEPT          net             $FW
	SMTP/ACCEPT          net             $FW

redémarrage du pare-feu
	sudo /etc/init.d/shorewall restart
===== Voir aussi =====

  * **(en)** [[http://www.dbmail.org/dokuwiki/doku.php/setup_postfix/|le tutoriel officiel de DBMail]]


----

//Contributeurs : [[:utilisateurs:Flavea]]. Titouan//